package com.bookcloud.java21.chapter8.synchronized语句87;

public class Counter {
  private int count = 0;
  private final Object lock = new Object();

  public void increment() {
    // 同步代码块，使用lock对象作为锁
    synchronized (lock) {
      count++;
      System.out.println(Thread.currentThread().getName() + " 增加计数: " + count);
    }

    // 非同步代码，其他线程可以同时执行
    try {
      Thread.sleep(1);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

  public void decrement() {
    // 同步代码块，使用lock对象作为锁
    synchronized (lock) {
      count--;
      System.out.println(Thread.currentThread().getName() + " 减少计数: " + count);
    }

    // 非同步代码，其他线程可以同时执行
    try {
      Thread.sleep(1);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

  public int getCount() {
    // 同步代码块，使用lock对象作为锁
    return count;
  }
}
